/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2012/07/12
* File: Effect.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#ifndef Effect_h__
#define Effect_h__

#include "../Core/Core.h"
#include "../Core/Declare.h"

class Effect
{
public:
	virtual ~Effect() {}

	virtual bool load(const char* vs_src, const char* ps_src) = 0;
	virtual bool load(const char* file_name) = 0;		/* dx effect */
	virtual void active() = 0;
public:
	virtual void setFloat(const char* name, f32 v) = 0;
	virtual void setInt(const char* name, s32 v) = 0;

	virtual void setFloatVector(const char* name, const f32* v, s32 sz) = 0;
	virtual void setIntVector(const char* name, const s32* v, s32 sz) = 0;

	virtual void setFloatArray(const char* name, const f32* v, s32 sz) = 0;
	virtual void setIntArray(const char* name, const s32* v, s32 sz) = 0;

	virtual void setMatrix(const char* name, const f32* m) = 0;

	virtual s32  getUniformHandle(const char* name) = 0;
	virtual s32  getAttributeHandle(const char* name) = 0;
};

#endif    /* Effect_h__ */